//https://practice.geeksforgeeks.org/problems/rank-the-permutations/0


#include <bits/stdc++.h>
using namespace std;
typedef long long ll ; 
//Silver_Lining
const int MOD = 1000003 ;
int fac [ 16 ] ; 
void cal ( )
{
    fac [ 0 ] = 1 ; 
    fac [ 1 ] = 1 ; 
    for ( int i = 2 ; i <= 15 ; i ++ )
        fac [ i ]= ( ( i ) % MOD  * ( fac [ i - 1 ] ) % MOD ) % MOD ; 
    
}
int r ( string s , char ch )
{
    for ( int i = 0 ; i < s.length() ; i ++ )
    {
        if ( s [ i ] == ch )
            return i ; 
    }
}
void remove ( string &s , char ch )
{
    for ( int i = 0 ; i < s.length() ; i ++ )
    {
        if ( s [ i ] == ch )
        {
            s.erase ( s.begin() + i ) ; 
            break ; 
        }
    }
}
int main() {
    
    cal() ; 
    int T ;
    cin >> T ; 
    while ( T -- )
    {
        string s ; 
        cin >> s ; 
        int n = s.length() , flag = 0 ; 
        string temp ; 
        int has [ 26 ] = {0} ; 
        for ( int i = 0 ; i <n ; i ++ )
        {
             has [ s [ i ] - 'a' ] ++ ; 
             if ( has [ s[ i ] - 'a' ] > 1 )
             {
                 cout << 0 << endl ; 
                 flag = 1 ; 
                 break ; 
             }
             if ( has [ s [ i ] - 'a' ]  == 1 )
                temp += s[ i ] ; 
        }
        if ( flag ) 
            continue ; 
        sort ( temp.begin() , temp.end() ) ; 
        int ans = 0 ; 
        for ( int i = 0 ; i <n  ;i ++ )
        {
            ans = ( ans % MOD + ( r ( temp ,  s [ i ] ) % MOD * fac [ n - i - 1 ]% MOD  ) % MOD ) % MOD;
            remove ( temp , s [ i ] ) ; 
        }
        cout << ans + 1 << endl ; 
    }
	//code
	return 0;
}
